package s2elinshu;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class J21HelloJDBC {
    // JDBC : Java DataBase Connectivity
	//http://www.oracle.com/technetwork/database/features/jdbc/jdbc-drivers-12c-download-1958347.html
	public static void main(String[] args) {
    String DRV = "oracle.jdbc.driver.OracleDriver";
    String URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
    String USR = "scott";
    String PWD = "TIGER";
    
    Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
    
	String sql = "select * from emp ";
	
	try{
		// 1. jdbc 드라이버 로드
		// forName 메서드로 동적으로 객체 생성
		Class.forName(DRV);
		
		// 2.데이터베이스 연결
		// getConnection 메서드에 접속정보가 있는 URL과 계정정보 및 암호인 USR,PWD를 
		// 매개변수로 넘김
		conn = DriverManager.getConnection(URL,USR,PWD);
		System.out.println("오라클 서버 접속 성공");
		
		// 3. 실행할 SQL 질의문 생성
		// SQL 질의문은 String 변수에 작성
		// prepareStatement 메서드를 통해
		// prepareStatement 객체로 생성
		pstmt = conn.prepareStatement(sql);
        // 4. SQL문 실행(전송)
		// executeQuery 메서드로
		// SQL 질의문을 실행할 수 있음
		// 5. 실행 결과 집합 받기
		// SQL 질의문이 select라면  
		// 실행 후 결과집합이 발생됨
		// 이것을 받으려면 ResultSet 객체를 이용
		rs = pstmt.executeQuery();
		
		StringBuilder sb = new StringBuilder();
		// 6. 결과집합 처리
		// next 메서드로 결과행 존재 여부를 확인하고 
		// getString 메서드로 해당 필드값을 출력
		while(rs.next()){
			sb.append(rs.getString(5)).append("/").append(rs.getString("ename")).append("\n");
		}
		System.out.println(sb);
	}catch(ClassNotFoundException cnfe){
		System.out.println("JDBC 드라이버를 확인하세요");
	}
	catch(Exception ex){
		ex.printStackTrace();
	}finally{
		// 7. 연결해제
		// JDBC 프로그래밍에 사용된 모든 객체들은 메모리에서 해제시킴
		// 나중에 생성한 녀석을 먼저 사용
		if(rs != null)
			try{rs.close();}catch(Exception e){}
		if(pstmt != null)
			try{pstmt.close();}catch(Exception e){}
		if(conn != null)
			try{conn.close();}catch(Exception e){}
	}
	
	}   // public static void main
}  // public class J21HelloJDBC
